﻿using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using PCC.Framework.DataAccess;

namespace TestApp
{
    class Class5
    {
        static void Main(string[] args)
        {
            string connectionString = GetConnectionString();
            // Open a sourceConnection to the AdventureWorks database.
            //using (SqlConnection sourceConnection =
            //           new SqlConnection(connectionString))
            //{
            //    sourceConnection.Open();

            //    // Perform an initial count on the destination table.
            //    SqlCommand commandRowCount = new SqlCommand(
            //        "SELECT COUNT(*) FROM " +
            //        "dbo.BulkCopyDemoMatchingColumns;",
            //        sourceConnection);
            //    long countStart = System.Convert.ToInt32(
            //        commandRowCount.ExecuteScalar());
            //    Console.WriteLine("Starting row count = {0}", countStart);

            //    // Get data from the source table as a SqlDataReader.
            //    SqlCommand commandSourceData = new SqlCommand(
            //        "SELECT ProductID, Name, " +
            //        "ProductNumber " +
            //        "FROM Production.Product;", sourceConnection);
            //    SqlDataReader reader =
            //        commandSourceData.ExecuteReader();

            //    // Open the destination connection. In the real world you would 
            //    // not use SqlBulkCopy to move data from one table to the other 
            //    // in the same database. This is for demonstration purposes only.
            //    using (SqlConnection destinationConnection =
            //               new SqlConnection(connectionString))
            //    {
            //        destinationConnection.Open();

            //        // Set up the bulk copy object. 
            //        // Note that the column positions in the source
            //        // data reader match the column positions in 
            //        // the destination table so there is no need to
            //        // map columns.
            //        using (SqlBulkCopy bulkCopy =
            //                   new SqlBulkCopy(destinationConnection))
            //        {
            //            bulkCopy.DestinationTableName =
            //                "dbo.BulkCopyDemoMatchingColumns";

            //            try
            //            {
            //                // Write from the source to the destination.
            //                bulkCopy.WriteToServer(reader);
            //            }
            //            catch (Exception ex)
            //            {
            //                Console.WriteLine(ex.Message);
            //            }
            //            finally
            //            {
            //                // Close the SqlDataReader. The SqlBulkCopy
            //                // object is automatically closed at the end
            //                // of the using block.
            //                reader.Close();
            //            }
            //        }

            //        // Perform a final count on the destination 
            //        // table to see how many rows were added.
            //        long countEnd = System.Convert.ToInt32(
            //            commandRowCount.ExecuteScalar());
            //        Console.WriteLine("Ending row count = {0}", countEnd);
            //        Console.WriteLine("{0} rows were added.", countEnd - countStart);
            //        Console.WriteLine("Press Enter to finish.");
            //        Console.ReadLine();
            //    }
            //}

            DBHelper dbHelper = new DBHelper(connectionString);

            DataTable dt = new DataTable();
            dt.Columns.Add("cA",typeof(string));
            Console.WriteLine(DateTime.Now.ToString());
            for(int i=0; i < 100000; i++)
            {
                DataRow dr = dt.NewRow();
                dr["cA"] = "ca"+i.ToString();
                dt.Rows.Add(dr);
            }

            Console.WriteLine(DateTime.Now.ToString());
            dbHelper.BatchUpdateData(dt, "ta");
            Console.WriteLine(DateTime.Now.ToString());
            Console.Read();
        }

        private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code, 
        // you can retrieve it from a configuration file. 
        {
            return "Data Source=(local); " +
                " Integrated Security=true;" +
                "Initial Catalog=AdventureWorks;";
        }
    }
}
